#ifndef __MY_LIBRARY_H__
  #define __MY_LIBRARY_H__

/*!
\mainpage
This library was designed to support C++ programmers to program faster and easier and provide easy access to
files, databases and resources.
The main idea behind it was to "keep it dead simple!".

my_library can help you with the followings:

\li variable arguments in functions
\li arrays from 1d to 3d
\li memory management of strings & characters
\li converter class, which helps you convert many data types to each other easily
\li database systems (PostgreSQL, MySQL, ODBC, SQLite)
\li date and time and performance measuring using the watch class
\li ini file parser
\li XML parser
\li instance manager for faster memory management of objects
\li unlimited integers, which can have unlimited number of digits
\li a mathematical parser, which can parse even complex statements
\li logger, which helps you log easily to files
\li converting numbers to their Persian, Arabic and German equivalent
\li a useful property pattern class
\li serializing mechanism, which lets you persist objects easily to an ini file or an XML file or even a database
\li smart_array & smart_pointer
\li prepared sql statement support
\li str class, which helps you with strings and formating strings in a comfortable way
\li network communications using the win_socket_client
\li threading using win_thread

All classes in this library work with exceptions and throw specific exceptions. This makes error handling easy and even fun.

This library should be linked statically.
Do not forget to link PostgreSQL, MySQL or ODBC libraries as well if you include their headers.
Once everything is included and linked you are ready to go :)
\code
// the main include file is:
#include "my_library.h"

// for SQLite include:
#include "sqlite_database.h"

// for PostgreSQL include:
#include "postgre_database.h"

// also include the following folder to the project properties (path may need to be changed according to your installation):
// "C:\Program Files\PostgreSQL\include"
// the following file(s) must be linked:
// libpq.lib (in "C:\Program Files\PostgreSQL\lib")

// for ODBC include:
#include "odbc_database.h"
// odbc32 may also be required for linking (g++)

// for MySQL include:
#include "mysql_database.h"
// also include the following folder to the project properties (path may need to be changed according to your installation):
// "C:\Program Files\MySQL\include"
// the following file(s) must be linked:
// libmysql.lib (in "C:\Program Files\MySQL\lib\opt")

// the following file(s) must be linked because of network class(es) (socket programming):
// wsock32.lib
\endcode

License:
my_library is free software with no warranty under any circumstances. It can be used in open source projects as well as
proprietary projects. For the complete source code please contact the developer(s).

Multithreading:
my_library is not designed to work under multithreaded situations. Some changes may be necessary to make all
classes thread-safe.

Internationalization:
my_library is designed to work with UTF8. That is why std::string is used instead of std::wstring.

Developed by: Parham Khataei

Date: since 2006

A test project under Visual Studio 2008 is also available <a href="prj.7z">here</a>.
*/

// specific implementations (for example postgre_database.h) should not be included here

// alphabetically sorted
#include "arg.h"
#include "array1d.h"
#include "array2d.h"
#include "array3d.h"
#include "converter.h"
#include "database.h"
#include "database_serializable.h"
#include "date_time.h"
#include "dbr.h"
#include "exceptions.h"
#include "file_remover.h"
#include "file_system.h"
#include "general_date_time.h"
#include "global_variables.h"
#include "ini.h"
#include "ini_category.h"
#include "ini_serializable.h"
#include "instance_manager.h"
#include "integer.h"
#include "intelligent_xml_parser.h"
#include "logger.h"
#include "macros.h"
#include "math_parser.h"
#include "number.h"
#include "object_record_set.h"
#include "property.h"
#include "record_set.h"
#include "safe_pointer.h"
#include "serializable.h"
#include "smart_array.h"
#include "smart_pointer.h"
#include "smart_stream.h"
#include "sql.h"
#include "str.h"
#include "unordered_map.h"
#include "useful_functions.h"
#include "watch.h"
#include "win_process.h"
#include "win_socket_client.h"
#include "win_socket_server.h"
#include "win_thread.h"
#include "xml_node.h"
#include "xml_parser.h"
#include "xml_serializable.h"

#endif
